import { app, BrowserWindow, ipcMain } from 'electron'
import { autoUpdater } from 'electron-updater'

// 禁用自动下载
autoUpdater.autoDownload = false

export function update(win?: BrowserWindow) {
  // 当有可用更新时
  autoUpdater.on('update-available', (info) => {
    // 发送更新信息给渲染进程
    win?.webContents.send('update-available', info)
  })

  // 当没有可用更新时
  autoUpdater.on('update-not-available', () => {
    win?.webContents.send('update-not-available')
  })

  // 更新下载进度
  autoUpdater.on('download-progress', (progressObj) => {
    win?.webContents.send('update-progress', progressObj)
  })

  // 更新下载完成
  autoUpdater.on('update-downloaded', () => {
    win?.webContents.send('update-downloaded')
  })

  // 更新错误
  autoUpdater.on('error', (err) => {
    win?.webContents.send('update-error', err)
  })

  // 检查更新
  ipcMain.handle('check-for-updates', () => {
    return autoUpdater.checkForUpdates()
  })

  // 下载更新
  ipcMain.handle('download-update', () => {
    return autoUpdater.downloadUpdate()
  })

  // 安装更新
  ipcMain.handle('install-update', () => {
    autoUpdater.quitAndInstall()
  })

  // 定期检查更新 (每小时)
  setInterval(() => {
    autoUpdater.checkForUpdates().catch(err => {
      console.error('自动更新检查失败:', err)
    })
  }, 60 * 60 * 1000)
} 